home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / util / newnclck / part01 / NoClick.c < prev    next >
C/C++ Source or Header  |  1990-10-10  |  2KB  |  93 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <exec/types.h>
  5. #include <devices/trackdisk.h>
  6.  
  7. void DoStuff(int, const char *);
  8. struct MsgPort *CreatePort(char *, LONG);
  9. void DeletePort(struct MsgPort *);
  10. struct IOStdReq *CreateExtIO(struct MsgPort *, ULONG);
  11. void DeleteExtIO(struct IOStdReq *);
  12. long OpenDevice(char *, ULONG, struct IOStdReq *, ULONG);
  13. void CloseDevice(struct IOStdReq *);
  14.  
  15. void main(int argc, char **argv)
  16. {
  17.  if (argc<2)
  18.   {
  19.    printf("Usage: %s [-]<0..%1d>\n",argv[0],NUMUNITS-1);
  20.    exit(20);
  21.   }
  22.  
  23.  while (--argc)
  24.   {
  25.    argv++;
  26.    if (**argv=='-') DoStuff(0,*argv+1);
  27.    else DoStuff(1,*argv);
  28.   }
  29.  
  30.  exit(0);
  31. }
  32.  
  33. void DoStuff(int doit, const char *arg)
  34. {
  35.  ULONG unit;
  36.  struct MsgPort *iop;
  37.  struct IOStdReq *ior;
  38.  
  39.  if (!isdigit(*arg))
  40.   {
  41.    printf("Bad argument '%c'!\n",*arg);
  42.    return;
  43.   }
  44.  
  45.  unit=atol(arg);
  46.  
  47.  if ((unit<0) || (unit>NUMUNITS-1))
  48.   {
  49.    printf("Bad drive number '%ld'!\n",unit);
  50.    return;
  51.   }
  52.  
  53.  if (iop=CreatePort("",0))
  54.   {
  55.    if (ior=CreateExtIO(iop,sizeof(struct IOStdReq)))
  56.     {
  57.      if (!OpenDevice(TD_NAME,unit,ior,0))
  58.       {
  59.        if (ior->io_Device->dd_Library.lib_Version>=36)
  60.         {
  61.          printf("NoClick unit %ld ",unit);
  62.  
  63.          if (doit)
  64.           {
  65.            ((struct TDU_PublicUnit *) (ior->io_Unit))->tdu_PubFlags|=TDPF_NOCLICK;
  66.            printf("ON\n");
  67.           }
  68.          else
  69.           {
  70.            ((struct TDU_PublicUnit *) (ior->io_Unit))->tdu_PubFlags&=~TDPF_NOCLICK;
  71.            printf("OFF\n");
  72.           }
  73.         }
  74.        else
  75.         printf("'" TD_NAME "' version 36 or better required!\n");
  76.  
  77.        CloseDevice(ior);
  78.       }
  79.      else
  80.       printf("Can't open '" TD_NAME "' for unit %ld!\n",unit);
  81.  
  82.      DeleteExtIO(ior);
  83.     }
  84.    else
  85.     printf("Can't create IORequest!\n");
  86.  
  87.    DeletePort(iop);
  88.   }
  89.  else
  90.   printf("Can't create port!\n");
  91. }
  92.  
  93.